﻿using UnityEngine;
using System;
using System.Collections;


public delegate void OnVoidHandler();
public delegate void OnVoidHandler<T> (T arg1);
public delegate void OnVoidHandler<T, U>(T arg1, U arg2);
public delegate void OnVoidHandler<T, U, V>(T arg1, U arg2, V arg3);

public delegate bool OnBoolHandler();
public delegate bool OnBoolHandler<T>(T arg1);
public delegate bool OnBoolHandler<T, U>(T arg1, U arg2);
public delegate bool OnBoolHandler<T, U, V>(T arg1, U arg2, V arg3);

public delegate int OnIntHandler();
public delegate int OnIntHandler<T>(T arg1);
public delegate int OnIntHandler<T, U>(T arg1, U arg2);
public delegate int OnIntHandler<T, U, V>(T arg1, U arg2, V arg3);

public delegate float OnFloatHandler();
public delegate float OnFloatHandler<T>(T arg1);
public delegate float OnFloatHandler<T, U>(T arg1, U arg2);
public delegate float OnFloatHandler<T, U, V>(T arg1, U arg2, V arg3);

public delegate IEnumerator OnTaskHandler ();
public delegate IEnumerator OnTaskHandler<T>(T arg1);
public delegate IEnumerator OnTaskHandler<T, U>(T arg1, U arg2);
public delegate IEnumerator OnTaskHandler<T, U, V>(T arg1, U arg2, V arg3);

public delegate GameObject OnGameObjectHandler ();
public delegate GameObject OnGameObjectHandler<T>(T arg1);
public delegate GameObject OnGameObjectHandler<T, U>(T arg1, U arg2);
public delegate GameObject OnGameObjectHandler<T, U, V>(T arg1, U arg2, V arg3);
